package com.irdstudio.efp.esb.api.bean.sed.customer.req;

import com.alibaba.fastjson.annotation.JSONField;
import com.irdstudio.basic.framework.core.annotation.DicType;
import com.irdstudio.basic.framework.core.annotation.NumType;
import com.irdstudio.efp.esb.api.common.GroupeInterface;
import com.irdstudio.efp.esb.api.common.GroupeInterface.sed;
import com.irdstudio.efp.esb.common.constant.nls.*;
import javafx.scene.control.cell.PropertyValueFactory;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

/**
* 普税贷产品对税e贷产品的此部分代码做了复用
* 说明：为了保证功能的复用性、提升开发的工作效率，对该代码进行了复用
* 评估是否会影响线上功能：否
* 评估时间：2020/5/25
* 处理方案：保留复用
*/
/**
 * 客人信息补录: <br>
 *
 * 0.1:caoxin:2019/4/22 7:55: TODO: <br>
 * @author caoxin
 * @return
 * @since 2019/4/22 7:55
 * @date 2019/4/22 7:55
 * @version 0.1
 */
public class ReqSedCustomerCollectionBean {

    /**授信申请流水号*/
    @NotNull(groups= {sed.class, GroupeInterface.psd.class},message = "CrdtAppFlowNo不能为空")
    @NotEmpty(groups= {sed.class, GroupeInterface.psd.class},message = "CrdtAppFlowNo不能为空")
    @Length(max = 64,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "CrdtAppFlowNo")
    private String lmtApplySeq;

    /**客户名称*/
    @NotNull(groups= {sed.class, GroupeInterface.psd.class},message = "CustNm不能为空")
    @NotEmpty(groups= {sed.class, GroupeInterface.psd.class},message = "CustNm不能为空")
    @Length(max = 100,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "CustNm")
    private String cusName;

    /**证件类型*/
    @NotNull(groups= {sed.class, GroupeInterface.psd.class},message = "CertTp不能为空")
    @NotEmpty(groups= {sed.class, GroupeInterface.psd.class},message = "CertTp不能为空")
    @Length(max = 10,groups= {sed.class, GroupeInterface.psd.class})
    @DicType(dicType = NlsCertTpEnum.class, method = "getValue",groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "CertTp")
    private String CertTp;

    /**证件号码*/
    @NotNull(groups= {sed.class, GroupeInterface.psd.class},message = "CertNo不能为空")
    @NotEmpty(groups= {sed.class, GroupeInterface.psd.class},message = "CertNo不能为空")
    @Length(max = 18,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "CertNo")
    private String certCode;

    /**证件到期日*/
    @Length(max = 10,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "CertMateDt")
    private String indivIdExpDt;

    /**婚姻状况*/
    @Length(max = 8,groups= {sed.class, GroupeInterface.psd.class})
    @DicType(dicType = NlsMrgSituEnum.class, method = "getValue",groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "MrgSitu")
    private String indivMarSt;

    /**最高学历*/
    @Length(max = 10,groups= {sed.class, GroupeInterface.psd.class})
    @DicType(dicType = NlsEduEnum.class, method = "getValue",groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "EduCd")
    private String indivEdt;

    /**学历代码*/
    @Length(max = 10,groups= {sed.class, GroupeInterface.psd.class})
    @DicType(dicType = NlsIndivDgrEnum.class, method = "getValue",groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "DgrCd")
    private String indivDgr;

    /**住宅性质*/
    @Length(max = 10,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "RsdntlTp")
    private String addrNature;

    /**家庭住址*/
    @Length(max = 60,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "FamAddr")
    private String indivRsdAddr;

    /**居住地邮政编码*/
    @Length(max = 6,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "ResdntPstcd")
    private String indivZipCode;

    /**手机*/
    @Length(max = 11,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "MblNo")
    private String phone;

    /**emal地址*/
    @Length(max = 80,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "Email")
    private String email;

    /**单位所属行业*/
    @Length(max = 5,groups= {sed.class, GroupeInterface.psd.class})
    @DicType(dicType = NlsIndivComFld.class, method = "getValue",groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "IndusCd")
    private String indivComFld;

    /**从事职业*/
    @Length(max = 10,groups= {sed.class, GroupeInterface.psd.class})
    @DicType(dicType = NlsCrrEnum.class, method = "getValue",groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "CrrCd")
    private String indivOcc;

    /**职务*/
    @Length(max = 10,groups= {sed.class, GroupeInterface.psd.class})
    @DicType(dicType = NlsIndivTitleEnum.class, method = "getValue",groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "PosCd")
    private String indivComJobTtl;

    /**职称*/
    @Length(max = 5,groups= {sed.class, GroupeInterface.psd.class})
    @DicType(dicType = NlsTtlEnum.class, method = "getValue",groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "TtlCd")
    private String title;

    /**联系人名称*/
    @Length(max = 100,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "UrgntCtcNm")
    private String emergencyContactPerson;

    /**紧急联系人电话*/
    @Length(max = 15,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "UrgntCtcTelNo")
    private String emergencyContactPersonPhone;

    /**单位电话*/
    @Length(max = 20,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "CorpTel")
    private String indivComPhn;

    /**单位地址 */
    @Length(max = 100,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "CorpAddr")
    private String indivComAddr;

    /**放款账户*/
    @Length(max = 20,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "DistrCardNo")
    private String distrCardNo;

    /**还款账户*/
    @Length(max = 20,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "RpyCardNo")
    private String rpyCardNo;

    /**贷款用途*/
    @Length(max = 5,groups= {sed.class, GroupeInterface.psd.class})
    @DicType(dicType = NlsBrwUsgEnum.class, method = "getValue",groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "LoanUsg")
    private String loanUse;

    /**核心客户号*/
    @Length(max = 20,groups= {sed.class, GroupeInterface.psd.class})
    @JSONField(name = "ClntNo")
    private String keyCusNumber;

    /**	个人年收入	double	18,2	N*/
    @JSONField(name = "IndvAnulIncm")
    private BigDecimal perAnnualIncome;

    /**	家庭年收入	double	18,2	N*/
    @JSONField(name = "FamAnulIncm")
    private BigDecimal famAnnualIncome;


    public String getLmtApplySeq() {
        return lmtApplySeq;
    }

    public void setLmtApplySeq(String lmtApplySeq) {
        this.lmtApplySeq = lmtApplySeq;
    }

    public String getCusName() {
        return cusName;
    }

    public void setCusName(String cusName) {
        this.cusName = cusName;
    }

    public String getCertTp() {
        return CertTp;
    }

    public void setCertTp(String certTp) {
        CertTp = certTp;
    }

    public String getCertCode() {
        return certCode;
    }

    public void setCertCode(String certCode) {
        this.certCode = certCode;
    }

    public String getIndivIdExpDt() {
        return indivIdExpDt;
    }

    public void setIndivIdExpDt(String indivIdExpDt) {
        this.indivIdExpDt = indivIdExpDt;
    }

    public String getIndivMarSt() {
        return indivMarSt;
    }

    public void setIndivMarSt(String indivMarSt) {
        this.indivMarSt = indivMarSt;
    }

    public String getIndivEdt() {
        return indivEdt;
    }

    public void setIndivEdt(String indivEdt) {
        this.indivEdt = indivEdt;
    }

    public String getIndivDgr() {
        return indivDgr;
    }

    public void setIndivDgr(String indivDgr) {
        this.indivDgr = indivDgr;
    }

    public String getAddrNature() {
        return addrNature;
    }

    public void setAddrNature(String addrNature) {
        this.addrNature = addrNature;
    }

    public String getIndivRsdAddr() {
        return indivRsdAddr;
    }

    public void setIndivRsdAddr(String indivRsdAddr) {
        this.indivRsdAddr = indivRsdAddr;
    }

    public String getIndivZipCode() {
        return indivZipCode;
    }

    public void setIndivZipCode(String indivZipCode) {
        this.indivZipCode = indivZipCode;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getIndivComFld() {
        return indivComFld;
    }

    public void setIndivComFld(String indivComFld) {
        this.indivComFld = indivComFld;
    }

    public String getIndivOcc() {
        return indivOcc;
    }

    public void setIndivOcc(String indivOcc) {
        this.indivOcc = indivOcc;
    }

    public String getIndivComJobTtl() {
        return indivComJobTtl;
    }

    public void setIndivComJobTtl(String indivComJobTtl) {
        this.indivComJobTtl = indivComJobTtl;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getEmergencyContactPerson() {
        return emergencyContactPerson;
    }

    public void setEmergencyContactPerson(String emergencyContactPerson) {
        this.emergencyContactPerson = emergencyContactPerson;
    }

    public String getEmergencyContactPersonPhone() {
        return emergencyContactPersonPhone;
    }

    public void setEmergencyContactPersonPhone(String emergencyContactPersonPhone) {
        this.emergencyContactPersonPhone = emergencyContactPersonPhone;
    }

    public String getIndivComPhn() {
        return indivComPhn;
    }

    public void setIndivComPhn(String indivComPhn) {
        this.indivComPhn = indivComPhn;
    }

    public String getIndivComAddr() {
        return indivComAddr;
    }

    public void setIndivComAddr(String indivComAddr) {
        this.indivComAddr = indivComAddr;
    }

    public String getDistrCardNo() {
        return distrCardNo;
    }

    public void setDistrCardNo(String distrCardNo) {
        this.distrCardNo = distrCardNo;
    }

    public String getRpyCardNo() {
        return rpyCardNo;
    }

    public void setRpyCardNo(String rpyCardNo) {
        this.rpyCardNo = rpyCardNo;
    }

    public String getLoanUse() {
        return loanUse;
    }

    public void setLoanUse(String loanUse) {
        this.loanUse = loanUse;
    }

    public String getKeyCusNumber() {
        return keyCusNumber;
    }

    public void setKeyCusNumber(String keyCusNumber) {
        this.keyCusNumber = keyCusNumber;
    }

    public BigDecimal getPerAnnualIncome() {
        return perAnnualIncome;
    }

    public void setPerAnnualIncome(BigDecimal perAnnualIncome) {
        this.perAnnualIncome = perAnnualIncome;
    }

    public BigDecimal getFamAnnualIncome() {
        return famAnnualIncome;
    }

    public void setFamAnnualIncome(BigDecimal famAnnualIncome) {
        this.famAnnualIncome = famAnnualIncome;
    }
}
